package com.cy.ppj.service.rule;

import java.util.List;

import com.cy.ppj.model.PageBean;
import com.cy.ppj.model.domian.rule.Menu;
import com.cy.ppj.model.domian.rule.Role;
import com.cy.ppj.model.query.rule.RoleAdminQuery;
import com.cy.ppj.model.vo.admin.rule.MenuAdminVO;
import com.cy.ppj.model.vo.admin.rule.MenuVO;

public interface RuleService {

    /**
     * 新增角色
     *
     * @param role
     */
    void addRole(Role role);

    /**
     * 编辑更新角色
     *
     * @param role
     */
    void updateRole(Role role);

    /**
     * 所有菜单
     *
     * @return
     */
    List<Menu> queryMenuPatternInCache();

    /**
     * 根据 角色ID获取菜单权限
     *
     * @param roleId
     * @return
     */
    List<Long> queryMenuIdInCahe(Long roleId);

    /**
     * 查询后台左侧菜单栏
     *
     * @param roleId
     * @return
     */
    List<MenuVO> queryMenusInCahce(Long roleId);

    /**
     * 后台权限菜单树状图
     *
     * @return
     */
    List<MenuAdminVO> queryMenusAdminListInCache(Long roleId);

    /**
     * 角色列表
     *
     * @return
     */
    PageBean<Role> queryRoleAdminList(RoleAdminQuery query);

    /**
     * 所有角色列表，有缓存
     *
     * @return
     */
    List<Role> allRolesInCache();

    /**
     * 添加角色菜单
     *
     * @param roleId
     * @param menuIds
     */
    void addRoleMenu(Long roleId, List<Long> menuIds);

}
